Кажется, что std::move здесь «ускоряет» возврат. Но это зло. На самом деле, компилятор и без std::move применяет Return Value Optimization (RVO) и возвращает s без копирования. А вот std::moveломает RVO — теперь вызывается перемещающий конструктор, и компилятор не может это оптимизировать.
Результат:
* return s; — возможно, вообще без затрат (RVO). * return std::move(s); — гарантированно перемещение (дороже, чем RVO).
🔑Правило: никогда не пиши std::move при возврате локальной переменной по значению. Доверься компилятору.
Когда std::move действительно нужен? Например:
void bar(std::string&& s) { auto local = std::move(s); // перемещаем из rvalue-ссылки }
Здесь всё логично: мы явно говорим, что хотим «украсть» содержимое.
Вывод:std::move — это не перемещение, а обещание, что объект можно обобрать. А перемещать будет уже компилятор.
Кажется, что std::move здесь «ускоряет» возврат. Но это зло. На самом деле, компилятор и без std::move применяет Return Value Optimization (RVO) и возвращает s без копирования. А вот std::moveломает RVO — теперь вызывается перемещающий конструктор, и компилятор не может это оптимизировать.
Результат:
* return s; — возможно, вообще без затрат (RVO). * return std::move(s); — гарантированно перемещение (дороже, чем RVO).
🔑Правило: никогда не пиши std::move при возврате локальной переменной по значению. Доверься компилятору.
Когда std::move действительно нужен? Например:
void bar(std::string&& s) { auto local = std::move(s); // перемещаем из rvalue-ссылки }
Здесь всё логично: мы явно говорим, что хотим «украсть» содержимое.
Вывод:std::move — это не перемещение, а обещание, что объект можно обобрать. А перемещать будет уже компилятор.
Telegram is an aspiring new messaging app that’s taking the world by storm. The app is free, fast, and claims to be one of the safest messengers around. It allows people to connect easily, without any boundaries.You can use channels on Telegram, which are similar to Facebook pages. If you’re wondering how to find channels on Telegram, you’re in the right place. Keep reading and you’ll find out how. Also, you’ll learn more about channels, creating channels yourself, and the difference between private and public Telegram channels.
Pinterest (PINS) Stock Sinks As Market Gains
Pinterest (PINS) closed at $71.75 in the latest trading session, marking a -0.18% move from the prior day. This change lagged the S&P 500's daily gain of 0.1%. Meanwhile, the Dow gained 0.9%, and the Nasdaq, a tech-heavy index, lost 0.59%.
Heading into today, shares of the digital pinboard and shopping tool company had lost 17.41% over the past month, lagging the Computer and Technology sector's loss of 5.38% and the S&P 500's gain of 0.71% in that time.
Investors will be hoping for strength from PINS as it approaches its next earnings release. The company is expected to report EPS of $0.07, up 170% from the prior-year quarter. Our most recent consensus estimate is calling for quarterly revenue of $467.87 million, up 72.05% from the year-ago period.